Delphi code for getting subreport information

The code below assumes that the Main Report PrintJob is already open.

Calls used
PEGetNSections
PEGetSectionCode
PEGetNSubreportsInSection
PEGetNthSubreportInSection
PEGetSubreportInfo
Code
uses CRDelphi;

procedure GetSubreportInfo;
var
  SubreportHandle : LongInt;
  SubreportInfo   : PESubreportInfo;
  nSections, 
  nSubReports     : smallint;
  nSection,
  nSubreport      : smallint;
  SectionCode     : smallint;
  SubReportName   : string;
  NLinks          : smallint;
  OnDemand        : smallint;
begin
  {Set the structure size}
  SubreportInfo.Structsize := SizeOf(PESubreportInfo);

  {Get the # of Sections in the Report}
  nSections := PEGetNSections(PrintJob);
  if nSections = -1 then
    {Do Error Handler};

  {Loop through the Sections}
  for nSection := 0 to (nSections - 1) do
  begin
    SectionCode := PEGetSectionCode(PrintJob, nSection);
    nSubReports := PEGetNSubreportsInSection(PrintJob, SectionCode);
    if nSubReports > 0 then
    begin
      for nSubreport := 0 to nSubReports - 1 do
      begin
        {Get the Subreport Handle}
        SubreportHandle := PEGetNthSubreportInSection(PrintJob, 
SectionCode, nSubreport);
        {Get the Subreport Name}
        if not PEGetSubreportInfo(PrintJob, SubreportHandle, 
SubreportInfo) then
          {Do Error Handler};

        {Get SubreportName and other information}
        {Normally these would be stored to stringlists, or something 
similar}
        SubReportName := (StrPas(@SubreportInfo.SubreportName));
        NLinks := SubreportInfo.NLinks;
        OnDemand := SubreportInfo.isOnDemand;
      end;
    end;
  end;
end;


Seagate Software IMG Holdings, Inc.
http://www.seagatesoftware.com
Support services:
http://support.seagatesoftware.com